home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 June / PersonalComputerWorld-June2009-CoverdiscCD.iso / Software / Freeware / Adobe AIR 1.5.1 / AdobeAIRInstaller.exe / setup.swf / scripts / mx / managers / DragManagerImpl.as < prev    next >
Encoding:
Text File  |  2009-02-12  |  6.1 KB  |  191 lines

  1. package mx.managers
  2. {
  3.    import flash.display.DisplayObject;
  4.    import flash.events.MouseEvent;
  5.    import flash.geom.Point;
  6.    import mx.core.DragSource;
  7.    import mx.core.IFlexDisplayObject;
  8.    import mx.core.IUIComponent;
  9.    import mx.core.UIComponentGlobals;
  10.    import mx.core.mx_internal;
  11.    import mx.managers.dragClasses.DragProxy;
  12.    import mx.styles.CSSStyleDeclaration;
  13.    import mx.styles.StyleManager;
  14.    
  15.    use namespace mx_internal;
  16.    
  17.    public class DragManagerImpl implements IDragManager
  18.    {
  19.       private static var instance:IDragManager;
  20.       
  21.       private static var sm:ISystemManager;
  22.       
  23.       mx_internal static const VERSION:String = "3.0.0.0";
  24.       
  25.       private var bDoingDrag:Boolean = false;
  26.       
  27.       private var mouseIsDown:Boolean = false;
  28.       
  29.       public var dragProxy:DragProxy;
  30.       
  31.       private var dragInitiator:IUIComponent;
  32.       
  33.       public function DragManagerImpl()
  34.       {
  35.          super();
  36.          if(instance)
  37.          {
  38.             throw new Error("Instance already exists.");
  39.          }
  40.          if(sm.isTopLevel())
  41.          {
  42.             sm.addEventListener(MouseEvent.MOUSE_DOWN,sm_mouseDownHandler);
  43.             sm.addEventListener(MouseEvent.MOUSE_UP,sm_mouseUpHandler);
  44.          }
  45.       }
  46.       
  47.       public static function getInstance() : IDragManager
  48.       {
  49.          if(!instance)
  50.          {
  51.             sm = SystemManagerGlobals.topLevelSystemManagers[0];
  52.             instance = new DragManagerImpl();
  53.          }
  54.          return instance;
  55.       }
  56.       
  57.       public function showFeedback(param1:String) : void
  58.       {
  59.          if(dragProxy)
  60.          {
  61.             if(param1 == DragManager.MOVE && !dragProxy.allowMove)
  62.             {
  63.                param1 = DragManager.COPY;
  64.             }
  65.             dragProxy.action = param1;
  66.          }
  67.       }
  68.       
  69.       private function sm_mouseDownHandler(param1:MouseEvent) : void
  70.       {
  71.          mouseIsDown = true;
  72.       }
  73.       
  74.       public function getFeedback() : String
  75.       {
  76.          return !!dragProxy ? dragProxy.action : DragManager.NONE;
  77.       }
  78.       
  79.       public function acceptDragDrop(param1:IUIComponent) : void
  80.       {
  81.          if(dragProxy)
  82.          {
  83.             dragProxy.target = param1;
  84.          }
  85.       }
  86.       
  87.       public function get isDragging() : Boolean
  88.       {
  89.          return bDoingDrag;
  90.       }
  91.       
  92.       private function sm_mouseUpHandler(param1:MouseEvent) : void
  93.       {
  94.          mouseIsDown = false;
  95.       }
  96.       
  97.       public function endDrag() : void
  98.       {
  99.          var _loc1_:ISystemManager = null;
  100.          if(dragProxy)
  101.          {
  102.             _loc1_ = dragInitiator.systemManager;
  103.             _loc1_.popUpChildren.removeChild(dragProxy);
  104.             dragProxy.removeChildAt(0);
  105.             dragProxy = null;
  106.          }
  107.          dragInitiator = null;
  108.          bDoingDrag = false;
  109.       }
  110.       
  111.       public function doDrag(param1:IUIComponent, param2:DragSource, param3:MouseEvent, param4:IFlexDisplayObject = null, param5:Number = 0, param6:Number = 0, param7:Number = 0.5, param8:Boolean = true) : void
  112.       {
  113.          var _loc9_:Number = NaN;
  114.          var _loc10_:Number = NaN;
  115.          var _loc17_:CSSStyleDeclaration = null;
  116.          var _loc18_:Class = null;
  117.          if(bDoingDrag)
  118.          {
  119.             return;
  120.          }
  121.          if(!(param3.type == MouseEvent.MOUSE_DOWN || param3.type == MouseEvent.CLICK || mouseIsDown || param3.buttonDown))
  122.          {
  123.             return;
  124.          }
  125.          bDoingDrag = true;
  126.          this.dragInitiator = param1;
  127.          dragProxy = new DragProxy(param1,param2);
  128.          param1.systemManager.popUpChildren.addChild(dragProxy);
  129.          if(!param4)
  130.          {
  131.             _loc17_ = StyleManager.getStyleDeclaration("DragManager");
  132.             _loc18_ = _loc17_.getStyle("defaultDragImageSkin");
  133.             param4 = new _loc18_();
  134.             dragProxy.addChild(DisplayObject(param4));
  135.             _loc9_ = Number(param1.width);
  136.             _loc10_ = Number(param1.height);
  137.          }
  138.          else
  139.          {
  140.             dragProxy.addChild(DisplayObject(param4));
  141.             if(param4 is ILayoutManagerClient)
  142.             {
  143.                UIComponentGlobals.mx_internal::layoutManager.validateClient(ILayoutManagerClient(param4),true);
  144.             }
  145.             if(param4 is IUIComponent)
  146.             {
  147.                _loc9_ = Number((param4 as IUIComponent).getExplicitOrMeasuredWidth());
  148.                _loc10_ = Number((param4 as IUIComponent).getExplicitOrMeasuredHeight());
  149.             }
  150.             else
  151.             {
  152.                _loc9_ = Number(param4.measuredWidth);
  153.                _loc10_ = Number(param4.measuredHeight);
  154.             }
  155.          }
  156.          param4.setActualSize(_loc9_,_loc10_);
  157.          dragProxy.setActualSize(_loc9_,_loc10_);
  158.          dragProxy.alpha = param7;
  159.          dragProxy.allowMove = param8;
  160.          var _loc11_:Object = param3.target;
  161.          if(_loc11_ == null)
  162.          {
  163.             _loc11_ = param1;
  164.          }
  165.          var _loc12_:Point = new Point(param3.localX,param3.localY);
  166.          _loc12_ = DisplayObject(_loc11_).localToGlobal(_loc12_);
  167.          _loc12_ = DisplayObject(param1.systemManager.topLevelSystemManager).globalToLocal(_loc12_);
  168.          var _loc13_:Number = _loc12_.x;
  169.          var _loc14_:Number = _loc12_.y;
  170.          var _loc15_:Point = DisplayObject(_loc11_).localToGlobal(new Point(param3.localX,param3.localY));
  171.          _loc15_ = DisplayObject(param1).globalToLocal(_loc15_);
  172.          dragProxy.xOffset = _loc15_.x + param5;
  173.          dragProxy.yOffset = _loc15_.y + param6;
  174.          dragProxy.x = _loc13_ - dragProxy.xOffset;
  175.          dragProxy.y = _loc14_ - dragProxy.yOffset;
  176.          dragProxy.startX = dragProxy.x;
  177.          dragProxy.startY = dragProxy.y;
  178.          if(param4 is DisplayObject)
  179.          {
  180.             DisplayObject(param4).cacheAsBitmap = true;
  181.          }
  182.          var _loc16_:Object = dragProxy.automationDelegate;
  183.          if(_loc16_)
  184.          {
  185.             _loc16_.recordAutomatableDragStart(param1,param3);
  186.          }
  187.       }
  188.    }
  189. }
  190.  
  191.